# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/29 15:33 
@Author  : ZhangShenao 
@File    : thread_lock.py 
@Desc    : 线程锁
使用threading.Lock()函数,创建线程锁,用于保护共享资源
"""
import threading

# 定义全局变量
count = 0

# 使用threading.Lock()函数,创建线程锁,用于保护共享资源
lock = threading.Lock()


def add():
    """定义线程的执行函数"""

    # 对全局变量count进行10000000次+1操作
    for i in range(10000000):
        # 声明对全局变量的操作
        global count

        # 加锁
        lock.acquire()

        # 执行操作
        count += 1

        # 释放锁
        lock.release()


if __name__ == '__main__':
    # 创建两个线程,并发执行add()函数
    t1 = threading.Thread(target=add)
    t2 = threading.Thread(target=add)

    # 开启两个线程,并等待两个线程执行完成
    t1.start()
    t2.start()
    t1.join()
    t2.join()

    # 打印最终结果
    print("count = ", count)  # 20000000
